﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Configuration;

using rent_car.Manejadores;
namespace rent_car.Gui
{
    public partial class FormVehiculosDisponibles : Form
    {
        private vehiculo vehiculoSelecionado;      

        private List<vehiculo> vehiculosFiltrados;

        public FormVehiculosDisponibles()
        {
            InitializeComponent();
            manejadorDeMarcas = ManejadorDeMarcas.getInstancia();
            manejadorVehiculos = ManejadorDeVehiculos.getInstancia();
            vehiculosFiltrados = manejadorVehiculos.vehiculosDisponibles();
        }

        private void FormVehiculosDisponibles_Load(object sender, EventArgs e)
        {
            cargarCbMarcas();
            cargarCbMotor();
            cargarCbTransmision();
            cargarDatos();
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            escogerVehiculo();
        }

        private void escogerVehiculo()
        {
            VehiculoSelecionado = gvVehiculosDisponibles.CurrentRow.DataBoundItem as vehiculo;
           //poner en enum rentado
            VehiculoSelecionado.estado = "rentado";
            manejadorVehiculos.cambiarEstadoVehiculo(VehiculoSelecionado);
            this.Close();
        }

        public vehiculo VehiculoSelecionado
        {
            get { return vehiculoSelecionado; }
            set { vehiculoSelecionado = value; }
        }

        private void cargarCbMarcas()
        {          
            cbMarcas.Items.Add("Todo");
            cbMarcas.Items.AddRange(manejadorDeMarcas.GetMarcarArray());
            cbMarcas.SelectedIndex = 0;
        }

        private void cargarCbMotor()
        {
            string motor = ConfigurationManager.AppSettings["motores"];
            string[] motores = motor.Split('|');
            cbMotor.Items.Add("Todo");
            cbMotor.Items.AddRange(motores);
            cbMotor.SelectedIndex = 0;
        }

        private void cargarCbTransmision()
        {
            string transmision = ConfigurationManager.AppSettings["transmisionVehiculo"];
            string[] transmisiones = transmision.Split('|');
            cbTransmision.Items.Add("Todo");
            cbTransmision.Items.AddRange(transmisiones);
            cbTransmision.SelectedIndex = 0;
        }

        private ManejadorDeMarcas manejadorDeMarcas = null;

        private ManejadorDeVehiculos manejadorVehiculos = null;

        private void cargarDatos(List<vehiculo> vehiculos) {
            gvVehiculosDisponibles.DataSource = null;
            gvVehiculosDisponibles.DataSource = vehiculos;       
        }

        private void cargarDatos() {            
            gvVehiculosDisponibles.DataSource = null;
            gvVehiculosDisponibles.DataSource = vehiculosFiltrados;
        }

        private void cbMarcas_SelectedIndexChanged(object sender, EventArgs e)
        {
            filtroDatos();        
        }

        private void cbMotor_SelectedIndexChanged(object sender, EventArgs e)
        {
            filtroDatos();
        }

        private void filtroDatos()
        {
            int id = 0;
            if (!cbMarcas.SelectedItem.ToString().Equals("Todo"))
            {
                id = ((marca)cbMarcas.SelectedItem).marca_id;
            }
            vehiculosFiltrados = manejadorVehiculos.GetVehiculosPorMarca(id, cbMotor.Text, cbTransmision.Text);
            cargarDatos(vehiculosFiltrados);
        }

        private void cbTransmision_SelectedIndexChanged(object sender, EventArgs e)
        {
            filtroDatos();
        }       

        private void gvVehiculosDisponibles_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            escogerVehiculo();
        }
    }
}
